import axios from 'axios';

// 模拟 API 响应延迟
const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));

// 模拟用户数据
const mockUsers = [
  {
    id: 1,
    username: 'admin',
    email: 'admin@example.com',
    password: '123456'
  },
  {
    id: 2,
    username: 'user',
    email: 'user@example.com',
    password: '123456'
  }
];

// 模拟登录 API
export const login = async (data: { username: string; password: string }) => {
  // 模拟网络延迟
  await delay(1000);
  
  // 检查用户是否存在
  const user = mockUsers.find(u => u.username === data.username && u.password === data.password);
  
  if (!user) {
    // 登录失败
    throw new Error('用户名或密码错误');
  }
  
  // 登录成功，返回用户信息和 token（不包含密码）
  const { password, ...userWithoutPassword } = user;
  return {
    user: userWithoutPassword,
    token: `mock-jwt-token-${user.id}`
  };
};

// 模拟注册 API
export const register = async (data: { username: string; email: string; password: string }) => {
  // 模拟网络延迟
  await delay(1000);
  
  // 检查用户名是否已存在
  if (mockUsers.some(u => u.username === data.username)) {
    throw new Error('用户名已存在');
  }
  
  // 检查邮箱是否已存在
  if (mockUsers.some(u => u.email === data.email)) {
    throw new Error('邮箱已存在');
  }
  
  // 创建新用户（在实际应用中会将用户添加到数据库）
  const newUser = {
    id: mockUsers.length + 1,
    ...data
  };
  
  // 模拟添加用户到数据库
  mockUsers.push(newUser);
  
  // 注册成功，返回成功消息
  return { message: '注册成功' };
};

// 在实际项目中，可以添加以下方法：
// - 验证 token
// - 刷新 token
// - 获取用户信息
// - 修改密码
// - 忘记密码等 